ERQ[程式指令]

ERQ[程式指令]
更多義項 ▼ 收起列表 ▲

符號名EQU

有時,一個表達式在程式中會多次出現,重複書寫可能較為繁雜,易出錯。另一方面。如果要對該表達式進行變動,那么必須在程式中找到每一個表達式,一一做出修改,稍有不慎,就會遺漏,引出麻煩。利用EQU偽指令,就可以避免這些問題的發生。

格式

該偽指令的含義是為EQU後面的<表達式>起一個叫做<符號名>的名字。這樣一來,程式中凡是需要用到該表達式的地方,就都可以用這個名字代替了。這裡,<表達式>可以是任何有效的數據,可以是能夠算出值的表達式,也可以是有效的助記符等。

equ偽指令並不為符號分配空間,編譯器將equ符號直接替換為其值,作為指令中的立即數。

例 COUNT EQU 256

表示賦予數256一個名字,叫做COUNT。

VAR1 EQU COUNT-2

表示賦予表達式COUNT-2一個名字,叫做VAR1。如果有“COUNT EQU 256”在先,那么由於COUNT是數值256,所以VAR1就代表數值254。

PH EQU PUSH

表示賦予PUSH一個名字PH。由於PUSH是彙編語言的一個助記符,因此,在程式中書寫PH AX,就相當於 PUSH AX。

EQU與偽指令“=”的區別

它們的區別是:由EQU偽指令定義後的符號名是不能重複再定義的,而“=”偽指令中定義的符號名可重複定義。例如:

EMP=7

EMP=EMP+2

這表示,開始把符號名EMP定義為是數值7,後來把符號名EMP重新定義為代表數值9。但是不能寫成:

EMP EQU 7

EMP EQU EMP+2

EQU與DATA的區別

EQU的作用相當於C語言中常量的定義,如

SIN1 EQU 0X7814

看見SIN1的時候就等於看到了0X7814. 兩者完全等價,所以使用時既可以作為地址也可以作為數據使用,看你做什麼用了。

而DATA 的作用是定義數據存儲器地址的指令,比如

AAA DATA 50H

意思就是將地址50H賦給 AAA。

51彙編的EQU不支持大於16位的常量定義

如:

MOV TL1,#256-FOSC/12/32/BAUDRATE

MOV TH1,#256-FOSC/12/32/BAUDRATE

結果會發現表達式並不能傳遞一個準確的數值給TL1,TH1。EQU定義的常量不能大過65535(2的16次方),把高過16位的略去一算,果然就是傳進去的數值。

相關詞條

熱門詞條

聯絡我們